
package com.bestseller.poi.service;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.DateUtil;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.bestseller.poi.entity.DiamondStarShop;
import com.bestseller.poi.entity.P4P;
import com.bestseller.poi.exception.CustomerAndDiamondException;
import com.bestseller.poi.mapper.DiamondStarShopMapper;
import com.bestseller.poi.mapper.P4PMapper;


/** 
* @author  xgx@bestseller.com.cn 
* @date 创建时间：2016年3月8日 下午2:44:49 
* @version 1.0  
*/
@Service
public class DinamondService {
	@Autowired
	private P4PMapper p4pMapper;
	@Autowired
	private DiamondStarShopMapper dssMapper;
	@Transactional
	public List<String> upload(File file,String p4pName,String dianmondName) throws CustomerAndDiamondException {
		Map<String,Object> map=new HashMap<>();
		InputStream is=null;
		try {
			is = new FileInputStream(file);
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}
		Workbook wb=null;
		try {
			wb = WorkbookFactory.create(is);
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		// 2. 得到 Sheet 对象
		Sheet sheet = null;
		sheet = wb.getSheet(p4pName);
		
		Sheet sheet2=null;
		sheet2=wb.getSheet(dianmondName);
		
		if(sheet!=null&&sheet2==null){
			// 3. 解析数据: 解析每一行, 每一个单元格.
			// 把一行转为一个 p4p 对象, 把整个 Excel 文档解析为一个 p4p 的集合
			// 若出现错误, 则把错误返回
			List<P4P> p4ps = new ArrayList<>();
			List<String> errors = parseToP4PList(sheet, p4ps);
			if(errors.size()<=0){
				map.put("sheetName", p4pName);
				//map.put("p4ps", p4ps);
				P4P p4p=null;
				for(int i=0;i<p4ps.size();i++){
					p4p=p4ps.get(i);
					map.put("p4p", p4p);
					if(p4pMapper.getById(map).size()>0){
						p4pMapper.deleteAll(map);
						continue;
					}
					else{
						map.remove("p4p");
					}
				}
				List<P4P> p4pes=new ArrayList<>();
				if(p4ps.size()>500){
					for(int i=0;i<p4ps.size();i++){
						p4pes.add(p4ps.get(i));
						if(i%500==0){
							map.put("p4ps", p4pes);
							p4pMapper.batchSave(map);
							p4pes.clear();
						}
						if(i==p4ps.size()-1){
							map.put("p4ps", p4pes);
							p4pMapper.batchSave(map);
						}
					}
				}else{
					map.put("p4ps", p4ps);
					p4pMapper.batchSave(map);
				}
				return new ArrayList<>();
			}else{
				return errors;
			}
		}
		
		else if(sheet==null&&sheet2!=null){
			List<DiamondStarShop> dsses=new ArrayList<>();
			List<String> errors = parseToDSSList(sheet2,dsses);
			if(errors.size()<=0){
				map.put("sheetName2", dianmondName);
				DiamondStarShop dss=null;
				for(int i=0;i<dsses.size();i++){
					dss=dsses.get(i);
					map.put("dss", dss);
					if(dssMapper.getById(map).size()>0){
						dssMapper.deleteAll(map);
						continue;
					}
					else{
						map.remove("dss");
					}
				}
				if(dsses.size()>500){
					List<DiamondStarShop> dsss=new ArrayList<>();
					for(int i=0;i<dsses.size();i++){
						dsss.add(dsses.get(i));
						if(i%500==0){
							map.put("dsses", dsss);
							dssMapper.batchSave(map);
							dsss.clear();
						}
						if(i==dsses.size()-1){
							map.put("dsses", dsss);
							dssMapper.batchSave(map);
						}
					}
				}else{
					map.put("dsses", dsses);
					dssMapper.batchSave(map);
				}
				return new ArrayList<>();
			}else{
				return errors;
			}
		}
			
		return null;
		
		
	}
	
	//推广单元报表的插入及解析
	private List<String> parseToDSSList(Sheet sheet, List<DiamondStarShop> dsses) throws CustomerAndDiamondException {
		List<String> errors = new ArrayList<>();
		for (int i = 2; i <= sheet.getLastRowNum(); i++) {
			Row row = sheet.getRow(i);
			if(row==null){
				continue;
			}
			DiamondStarShop dss = parseToDSS(row,i+1,errors);
			if (dss != null) {
				dsses.add(dss);
			}
		}
		return errors;
	}
	
	private DiamondStarShop parseToDSS(Row row,int i,List<String> erros) throws CustomerAndDiamondException  {
		DiamondStarShop dss=null;
		Cell cell=row.getCell(0);
		String conditio=null;
		if(cell!=null&&getCellValue(cell)!=null&&!getCellValue(cell).equals("")){
			conditio=getCellValue(cell);
		}
		
		cell=row.getCell(1);
		String unit=null;
		if(cell!=null&&getCellValue(cell)!=null&&!getCellValue(cell).equals("")){
			unit=getCellValue(cell);
		}
		
		cell=row.getCell(2);
		String project=null;
		if(cell!=null&&getCellValue(cell)!=null&&!getCellValue(cell).equals("")){
			project=getCellValue(cell);
		}
		
		cell=row.getCell(3);
		Long impression=null;
		if(cell!=null&&getCellValue(cell)!=null&&!getCellValue(cell).equals("")){
			try {
				impression=(long) Double.parseDouble(getCellValue(cell));
			} catch (NumberFormatException e) {
				erros.add("数据类型有误,第"+i+"行第4列");
			}
		}
		
		cell=row.getCell(4);
		Long click=null;
		if(cell!=null&&getCellValue(cell)!=null&&!getCellValue(cell).equals("")){
			try {
				click=(long) Double.parseDouble(getCellValue(cell));
			} catch (NumberFormatException e) {
				erros.add("数据类型有误,第"+i+"行第5列");
			}
		}
		
		cell=row.getCell(5);
		Double ctr=null;
		if(cell!=null&&getCellValue(cell)!=null&&!getCellValue(cell).equals("")){
			try {
				ctr=Double.parseDouble(getCellValue(cell));
			} catch (NumberFormatException e) {
				erros.add("数据类型有误,第"+i+"行第6列");
			}
		}
		
		cell=row.getCell(6);
		Double cost=null;
		if(cell!=null&&getCellValue(cell)!=null&&!getCellValue(cell).equals("")){
			try {
				cost=Double.parseDouble(getCellValue(cell));
			} catch (NumberFormatException e) {
				erros.add("数据类型有误,第"+i+"行第7列");
			}
		}
		
		cell=row.getCell(7);
		Double cpm=null;
		if(cell!=null&&getCellValue(cell)!=null&&!getCellValue(cell).equals("")){
			try {
				cpm=Double.parseDouble(getCellValue(cell));
			} catch (NumberFormatException e) {
				erros.add("数据类型有误,第"+i+"行第8列");
			}
		}
		
		cell=row.getCell(8);
		Double cpc=null;
		if(cell!=null&&getCellValue(cell)!=null&&!getCellValue(cell).equals("")){
			try {
				cpc=Double.parseDouble(getCellValue(cell));
			} catch (NumberFormatException e) {
				erros.add("数据类型有误,第"+i+"行第9列");
			}
		}
		
		cell=row.getCell(9);
		Double tdRoi=null;
		if(cell!=null&&getCellValue(cell)!=null&&!getCellValue(cell).equals("")){
			try {
				tdRoi=Double.parseDouble(getCellValue(cell));
			} catch (NumberFormatException e) {
				erros.add("数据类型有误,第"+i+"行第10列");
			}
		}
		
		cell=row.getCell(10);
		Double sdRoi=null;
		if(cell!=null&&getCellValue(cell)!=null&&!getCellValue(cell).equals("")){
			try {
				sdRoi=Double.parseDouble(getCellValue(cell));
			} catch (NumberFormatException e) {
				erros.add("数据类型有误,第"+i+"行第11列");
			}
		}
		
		cell=row.getCell(11);
		Double fdRoi=null;
		if(cell!=null&&getCellValue(cell)!=null&&!getCellValue(cell).equals("")){
			try {
				fdRoi=Double.parseDouble(getCellValue(cell));
			} catch (NumberFormatException e) {
				erros.add("数据类型有误,第"+i+"行第12列");
			}
		}
		
		cell=row.getCell(12);
		Long tdOrders=null;
		if(cell!=null&&getCellValue(cell)!=null&&!getCellValue(cell).equals("")){
			try {
				tdOrders=(long) Double.parseDouble(getCellValue(cell));
			} catch (NumberFormatException e) {
				erros.add("数据类型有误,第"+i+"行第13列");
			}
		}
		
		cell=row.getCell(13);
		Long sdOrders=null;
		if(cell!=null&&getCellValue(cell)!=null&&!getCellValue(cell).equals("")){
			try {
				sdOrders=(long) Double.parseDouble(getCellValue(cell));
			} catch (NumberFormatException e) {
				erros.add("数据类型有误,第"+i+"行第14列");
			}
		}
		
		cell=row.getCell(14);
		Long fdOrders=null;
		if(cell!=null&&getCellValue(cell)!=null&&!getCellValue(cell).equals("")){
			try {
				fdOrders=(long) Double.parseDouble(getCellValue(cell));
			} catch (NumberFormatException e) {
				erros.add("数据类型有误,第"+i+"行第15列");
			}
		}
		
		cell=row.getCell(15);
		Integer sBookmark=null;
		if(cell!=null&&getCellValue(cell)!=null&&!getCellValue(cell).equals("")){
			try {
				sBookmark=(int) Double.parseDouble(getCellValue(cell));
			} catch (NumberFormatException e) {
				erros.add("数据类型有误,第"+i+"行第16列");
			}
		}
		
		cell=row.getCell(16);
		Integer pBookmark=null;
		if(cell!=null&&getCellValue(cell)!=null&&!getCellValue(cell).equals("")){
			try {
				pBookmark=(int) Double.parseDouble(getCellValue(cell));
			} catch (NumberFormatException e) {
				erros.add("数据类型有误,第"+i+"行第17列");
			}
		}
		
		cell=row.getCell(17);
		Long visits=null;
		if(cell!=null&&getCellValue(cell)!=null&&!getCellValue(cell).equals("")){
			try {
				visits=(long) Double.parseDouble(getCellValue(cell));
			} catch (NumberFormatException e) {
				erros.add("数据类型有误,第"+i+"行第18列");
			}
		}
		
		cell=row.getCell(18);
		Long tdVisits=null;
		if(cell!=null&&getCellValue(cell)!=null&&!getCellValue(cell).equals("")){
			try {
				tdVisits=(long) Double.parseDouble(getCellValue(cell));
			} catch (NumberFormatException e) {
				erros.add("数据类型有误,第"+i+"行第19列");
			}
		}
		
		cell=row.getCell(19);
		Long sdVisits=null;
		if(cell!=null&&getCellValue(cell)!=null&&!getCellValue(cell).equals("")){
			try {
				sdVisits=(long) Double.parseDouble(getCellValue(cell));
			} catch (NumberFormatException e) {
				erros.add("数据类型有误,第"+i+"行第20列");
			}
		}
		
		cell=row.getCell(20);
		Long fdVisits=null;
		if(cell!=null&&getCellValue(cell)!=null&&!getCellValue(cell).equals("")){
			try {
				fdVisits=(long) Double.parseDouble(getCellValue(cell));
			} catch (NumberFormatException e) {
				erros.add("数据类型有误,第"+i+"行第21列");
			}
		}
		
		cell=row.getCell(21);
		Double tdvImpre=null;
		if(cell!=null&&getCellValue(cell)!=null&&!getCellValue(cell).equals("")){
			try {
				tdvImpre=Double.parseDouble(getCellValue(cell));
			} catch (NumberFormatException e) {
				erros.add("数据类型有误,第"+i+"行第22列");
			}
		}
		
		cell=row.getCell(22);
		Double sdvImpre=null;
		if(cell!=null&&getCellValue(cell)!=null&&!getCellValue(cell).equals("")){
			try {
				sdvImpre=Double.parseDouble(getCellValue(cell));
			} catch (NumberFormatException e) {
				erros.add("数据类型有误,第"+i+"行第23列");
			}
		}
		
		cell=row.getCell(23);
		Double fdvImpre=null;
		if(cell!=null&&getCellValue(cell)!=null&&!getCellValue(cell).equals("")){
			try {
				fdvImpre=Double.parseDouble(getCellValue(cell));
			} catch (NumberFormatException e) {
				erros.add("数据类型有误,第"+i+"行第24列");
			}
		}
		
		cell=row.getCell(24);
		Double sdAmount=null;
		if(cell!=null&&getCellValue(cell)!=null&&!getCellValue(cell).equals("")){
			try {
				sdAmount=Double.parseDouble(getCellValue(cell));
			} catch (NumberFormatException e) {
				erros.add("数据类型有误,第"+i+"行第25列");
			}
		}
		
		cell=row.getCell(25);
		Double fdAmount=null;
		if(cell!=null&&getCellValue(cell)!=null&&!getCellValue(cell).equals("")){
			try {
				fdAmount=Double.parseDouble(getCellValue(cell));
			} catch (NumberFormatException e) {
				erros.add("数据类型有误,第"+i+"行第26列");
			}
		}
		
		cell=row.getCell(26);
		String sCode=null;
		if(cell!=null&&getCellValue(cell)!=null&&!getCellValue(cell).equals("")){
			sCode=getCellValue(cell);
		}
		
		cell=row.getCell(27);
		String cCategory=null;
		if(cell!=null&&getCellValue(cell)!=null&&!getCellValue(cell).equals("")){
			cCategory=getCellValue(cell);
			//判断单元格中的数据是否符合上传条件
			String[] s=new String[]{"关注","老客","新客","认知","其他","明星店铺"};
			int count=0;
			for(String t:s){
				if(cCategory!=null&&cCategory.equals(t)){
					count++;
				}
			}
			if(count==0){
				erros.add("人群信息有误("+cCategory+")第"+i+"行第28列");
			}
		}
		
		cell=row.getCell(28);
		String dStarShop=null;
		if(cell!=null&&getCellValue(cell)!=null&&!getCellValue(cell).equals("")){
			dStarShop=getCellValue(cell);
			String[] s=new String[]{"钻展","明星店铺"};
			int count=0;
			for(String t:s){
				if(dStarShop!=null&&dStarShop.equals(t)){
					count++;
				}
			}
			
			if(count==0){
				erros.add("钻展、明星店铺信息有误("+dStarShop+")第"+i+"行第29列");
			}
		}
		
		cell=row.getCell(29);
		String dayId=null;
		if(cell!=null&&getCellValue(cell)!=null&&!getCellValue(cell).equals("")){
			dayId=getCellValue(cell);
		}
		
		dss=new DiamondStarShop(conditio, unit, project, impression, click, ctr, cost, cpm, cpc, tdRoi, sdRoi, fdRoi, tdOrders, sdOrders, fdOrders, sBookmark, pBookmark, visits, tdVisits, sdVisits, fdVisits, tdvImpre, sdvImpre, fdvImpre, sdAmount, fdAmount, sCode, cCategory, dStarShop, dayId);
		return dss;
	}

	//p4p数据表的插入及解析
	private List<String> parseToP4PList(Sheet sheet, List<P4P> p4ps) {
		List<String> errors=new ArrayList<>();
		for (int i = 2; i <= sheet.getLastRowNum(); i++) {
			Row row = sheet.getRow(i);
			P4P p4p = parseToP4P(row,i+1,errors);
			if (p4p != null) {
				p4ps.add(p4p);
			}
		}
		
		return errors;
	}

	//解析单元格
	private P4P parseToP4P(Row row,int i,List<String> errors) {
		P4P p4p=null;
		Cell cell = row.getCell(0);
		String dayId=null;
		if(cell!=null&&getCellValue(cell)!=null&&!getCellValue(cell).equals("")){
			dayId = getCellValue(cell);
		}
		
		
		cell = row.getCell(1);
		String project=null;
		if(cell!=null&&getCellValue(cell)!=null&&!getCellValue(cell).equals("")){
			project = getCellValue(cell);
		}
		
		
		cell = row.getCell(2);
		String product=null;
		if(cell!=null&&getCellValue(cell)!=null&&!getCellValue(cell).equals("")){
			product = getCellValue(cell);
		}
		
		
		cell = row.getCell(3);
		String searchType=null;
		if(cell!=null&&getCellValue(cell)!=null&&!getCellValue(cell).equals("")){
			searchType = getCellValue(cell);
		}
		 
		cell = row.getCell(4);
		String trafficSource=null;
		if(cell!=null&&getCellValue(cell)!=null&&!getCellValue(cell).equals("")){
			trafficSource = getCellValue(cell);
		}
		
		
		cell = row.getCell(5);
		Long impression=null;
		if(cell!=null&&getCellValue(cell)!=null&&!getCellValue(cell).equals("")){
			try {
				impression = (long) Double.parseDouble(getCellValue(cell));
			} catch (NumberFormatException e) {
				errors.add("数据类型有误,第"+i+"行第6列");
			}
		}
		
		cell = row.getCell(6);
		Long click=null;
		if(cell!=null&&getCellValue(cell)!=null&&!getCellValue(cell).equals("")){
			try {
				click = (long) Double.parseDouble(getCellValue(cell));
			} catch (NumberFormatException e) {
				errors.add("数据类型有误,第"+i+"行第7列");
			}
		}
		
		cell = row.getCell(7);
		Long cost=null;
		if(cell!=null&&getCellValue(cell)!=null&&!getCellValue(cell).equals("")){
			try {
				cost = (long) Double.parseDouble(getCellValue(cell));
			} catch (NumberFormatException e) {
				errors.add("数据类型有误,第"+i+"行第8列");
			}
		}
		
		cell = row.getCell(8);
		Double ctr=null;
		if(cell!=null&&getCellValue(cell)!=null&&!getCellValue(cell).equals("")){
			try {
				ctr = Double.parseDouble(getCellValue(cell));
			} catch (NumberFormatException e) {
				errors.add("数据类型有误,第"+i+"行第9列");
			}
		}
		
		cell = row.getCell(9);
		Double cpc=null;
		if(cell!=null&&getCellValue(cell)!=null&&!getCellValue(cell).equals("")){
			try {
				cpc = Double.parseDouble(getCellValue(cell));
			} catch (NumberFormatException e) {
				errors.add("数据类型有误,第"+i+"行第10列");
			}
		}
		
		cell = row.getCell(10);
		Double cpm=null;
		if(cell!=null&&getCellValue(cell)!=null&&!getCellValue(cell).equals("")){
			try {
				cpm = Double.parseDouble(getCellValue(cell));
			} catch (NumberFormatException e) {
				errors.add("数据类型有误,第"+i+"行第11列");
			}
		}
		
		cell = row.getCell(11);
		Double rVClick=null;
		if(cell!=null&&getCellValue(cell)!=null&&!getCellValue(cell).equals("")){
			
			try {
				rVClick = Double.parseDouble(getCellValue(cell));
			} catch (NumberFormatException e) {
				errors.add("数据类型有误,第"+i+"行第12列");
			}
		}
		
		cell = row.getCell(12);
		Long dTurnover=null;
		if(cell!=null&&getCellValue(cell)!=null&&!getCellValue(cell).equals("")){
			try {
				dTurnover = (long) Double.parseDouble(getCellValue(cell));
			} catch (NumberFormatException e) {
				errors.add("数据类型有误,第"+i+"行第13列");
			}
		}
		
		cell = row.getCell(13);
		Integer dTransactions=null;
		if(cell!=null&&getCellValue(cell)!=null&&!getCellValue(cell).equals("")){
			try {
				dTransactions = (int) Double.parseDouble(getCellValue(cell));
			} catch (NumberFormatException e) {
				errors.add("数据类型有误,第"+i+"行第14列");
			}
		}
		
		cell = row.getCell(14);
		Long iTurnover=null;
		if(cell!=null&&getCellValue(cell)!=null&&!getCellValue(cell).equals("")){
			try {
				iTurnover = (long) Double.parseDouble(getCellValue(cell));
			} catch (NumberFormatException e) {
				errors.add("数据类型有误,第"+i+"行第15列");
			}
		}
		
		cell = row.getCell(15);
		Integer iTransactions=null;
		if(cell!=null&&getCellValue(cell)!=null&&!getCellValue(cell).equals("")){
			try {
				iTransactions = (int) Double.parseDouble(getCellValue(cell));
			} catch (NumberFormatException e) {
				errors.add("数据类型有误,第"+i+"行第16列");
			}
		}
		
		cell = row.getCell(16);
		Long tAmount=null;
		if(cell!=null&&getCellValue(cell)!=null&&!getCellValue(cell).equals("")){
			try {
				tAmount = (long) Double.parseDouble(getCellValue(cell));
			} catch (NumberFormatException e) {
				errors.add("数据类型有误,第"+i+"行第17列");
			}
		}
		
		cell = row.getCell(17);
		Integer tTransactions=null;
		if(cell!=null&&getCellValue(cell)!=null&&!getCellValue(cell).equals("")){
			 try {
				tTransactions = (int) Double.parseDouble(getCellValue(cell));
			} catch (NumberFormatException e) {
				errors.add("数据类型有误,第"+i+"行第18列");
			}
		}
		
		cell = row.getCell(18);
		Integer pBookmark=null;
		if(cell!=null&&getCellValue(cell)!=null&&!getCellValue(cell).equals("")){
			try {
				pBookmark = (int) Double.parseDouble(getCellValue(cell));
			} catch (NumberFormatException e) {
				errors.add("数据类型有误,第"+i+"行第19列");
			}
		}
		
		cell = row.getCell(19);
		Integer sBookmark=null;
		if(cell!=null&&getCellValue(cell)!=null&&!getCellValue(cell).equals("")){
			try {
				sBookmark = (int) Double.parseDouble(getCellValue(cell));
			} catch (NumberFormatException e) {
				errors.add("数据类型有误,第"+i+"行第20列");
			}
		}
		
		cell = row.getCell(20);
		Integer tBookmark=null;
		if(cell!=null&&getCellValue(cell)!=null&&!getCellValue(cell).equals("")){
			try {
				tBookmark = (int) Double.parseDouble(getCellValue(cell));
			} catch (NumberFormatException e) {
				errors.add("数据类型有误,第"+i+"行第21列");
			}
		}
		
		cell = row.getCell(21);
		Double roi=null;
		if(cell!=null&&getCellValue(cell)!=null&&!getCellValue(cell).equals("")){
			try {
				roi = Double.parseDouble(getCellValue(cell));
			} catch (NumberFormatException e) {
				errors.add("数据类型有误,第"+i+"行第22列");
			}
		}
		
		cell = row.getCell(22);
		Integer dsCart=null;
		if(cell!=null&&getCellValue(cell)!=null&&!getCellValue(cell).equals("")){
			try {
				dsCart = (int) Double.parseDouble(getCellValue(cell));
			} catch (NumberFormatException e) {
				errors.add("数据类型有误,第"+i+"行第23列");
			}
		}
		
		cell = row.getCell(23);
		Integer isCart=null;
		if(cell!=null&&getCellValue(cell)!=null&&!getCellValue(cell).equals("")){
			try {
				isCart = (int) Double.parseDouble(getCellValue(cell));
			} catch (NumberFormatException e) {
				errors.add("数据类型有误,第"+i+"行第24列");
			}
		}
		
		cell = row.getCell(24);
		Integer tsCart=null;
		if(cell!=null&&getCellValue(cell)!=null&&!getCellValue(cell).equals("")){
			try {
				tsCart = (int) Double.parseDouble(getCellValue(cell));
			} catch (NumberFormatException e) {
				errors.add("数据类型有误,第"+i+"行第25列");
			}
		}
		
		cell = row.getCell(25);
		String poductLine=null;
		if(cell!=null&&getCellValue(cell)!=null&&!getCellValue(cell).equals("")){
			poductLine = getCellValue(cell);
		}
		
		cell = row.getCell(26);
		String shopCode=null;
		if(cell!=null&&getCellValue(cell)!=null&&!getCellValue(cell).equals("")){
			shopCode = getCellValue(cell);
		}
		
		p4p=new P4P(dayId, project, product, searchType, trafficSource, impression, click, cost, ctr, cpc, cpm, rVClick, dTurnover, dTransactions, iTurnover, iTransactions, tAmount, tTransactions, pBookmark, sBookmark, tBookmark, roi, dsCart, isCart, tsCart, poductLine, shopCode);
		return p4p;
	}
	
	
	//解析单元格 的类型
	private DateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
	private String getCellValue(Cell cell) {
		switch (cell.getCellType()) {
		case Cell.CELL_TYPE_STRING:
			return cell.getRichStringCellValue().getString();
		case Cell.CELL_TYPE_NUMERIC:
			if (DateUtil.isCellDateFormatted(cell)) {
				Date date = cell.getDateCellValue();
				return dateFormat.format(date)+"";
			} else {
				return cell.getNumericCellValue() + "";
			}
		case Cell.CELL_TYPE_BOOLEAN:
			return cell.getBooleanCellValue() + "";
		case Cell.CELL_TYPE_FORMULA:
			return cell.getCellFormula() + "";
		}
		return null;
	}
	
	

}
